/**
 * 闭包：
 *  1.全局变量特点： 全局变量常驻内存、全局变量污染全局
 *  2.局部变量的特点：不常驻内存会被垃圾机制回收、不会污染全局
 * 
 * 想实现的功能：
 *  1.常驻内存
 *  2.不污染全局
 *    产生了闭包，闭包可以解决这个问题……
 *    闭包：函数嵌套函数，内部函数会调用外部函数的变量与参数，变量或参数不会被系统
 *    闭包的写法：函数嵌套函数，并return里面的函数，这样就形成了闭包
 */
//全局变量
var a = 123;

void main(List<String> args) {
  printInfo() {
    //局部变量
    var myNum = 123;
    myNum++;
    print(myNum);
  }

  printInfo();

  //闭包
  fn() {
    var aa = 123; //不会污染全局  常驻内存
    return () {
      aa++;
      print(aa);
    };
  }

  var b = fn();
  b();
  b();
  b();
}
